关于Number
的常用方法和注意点
NaN
NaN
是代表非数字的特殊属性
NaN 注意点
NaN
不是一个数 但是属于number类型
typeof NaN //"number"
NaN
和NaN
不相等
NaN == NaN //false
何时会出现NaN
数字和 NaN 进行运算
1 [+ - * /] NaN = NaN
无效数学运算中
"a" - 1 || "a" * 1 || "a" / 1 = NaN
数字 + undefined
1 + undefined = NaN
- 在进行运算的时候会 -
*
/
都会默认的调用 Number
方法 遇到无法转换的都是 NaN
- 因为 +
在JS中不仅仅是数学运算, 遇到字符串的时候属于字符串拼接 其他时候也会默认调用 Number
进行转换
- 排除数字和 NaN
进行运算之外 也只有 数字 + undefined
= NaN
具体的看Number()
的转换规则
Number()
Number()
方法把值转换为数字
对字符串进行转换
Number('66') //66
Number('66px') //NaN
对字符串进行转换的时候只有 都是 数字才会转换成数字 反之
对布尔值进行转换 true
和 false
Number(true) //1
Number(false) //0
对布尔值进行转换的时候 true = 1
false = 0
null
和 undefined
Number(null) // 0
Number(undefined) //NaN
null
和 undefined
的区别请看 null和undefined的区别 阮老师的这篇文章详细的介绍了
''
和 []
Number('') //0
Number([]) //0
把 []
转换为数字 首先调用数组的 toString
方法把 []
-> ''
isNaN(), Number.isNaN()
isNaN()
是ES5方法 Number.isNaN()
是ES6在 Number
对象上新增加方法
isNaN()
检测一个值是否为NaN
会先调用Number()
将非数值的值转为数值,再进行判断
isNaN(NaN) //true
isNaN(1) //false
isNaN('1px') //true
Number.isNaN()
只有对于NaN
才返回true
,非NaN
一律返回false
isNaN(undefined) //true
Number.isNaN(undefined) //false 不会调用 Number
isNaN("NaN") // true
Number.isNaN("NaN") // false
Number.isInteger()
Number.isInteger()
判断一个数值是否为整数。
Number.isInteger(11) // true
Number.isInteger(11.0) // true
Number.isInteger(11.1) // false
如果参数不是数值 都返回 false
Number.isInteger(null) //false
Number.isInteger(true) //false
Number.isInteger('') //false
parseInt(), Number.parseInt() parseFloat(), Number.parseFloat()
去掉非数字部分 返回数字部分 parseInt()
遇到的第一个非数字停止
parseInt('12px') // 12
parseInt('px12') //NaN
parseFloat()
相比 parseInt()
可以多识别一个 .
parseFloat('12.333px') // 12
parseFloat('px12.333') //NaN
Number.parseInt()
和 Number.parseFloat()
是 ES6 将全局方法parseInt()
和parseFloat()
,移植到Number
对象上面,行为完全保持不变。
toFixed()
toFixed()
保留小数点后几位
1.14432.toFixed(2) // "1.14"
1.14532.toFixed(2) // "1.15"
toFixed()
使用四舍五入法
Math 对象
Math
是一个对象,里面提供了很多操作数字的相关方法
Math.abs()
Math.abs()
获取绝对值
Math.abs(-1) //1
Math.abs(-true) //1
Math.ceil()
Math.ceil
向上取整
Math.ceil(12.000001) //13
Math.ceil(-12.6) //-12
Math.floor()
Math.floor
向下取整
Math.floor(12.6) //12
Math.floor(-12.6) //-13
Math.round()
Math.round()
四舍五入
Math.round(12.5) //13
Math.round(12.4) //12
Math.round(-12.4) //12
Math.round(-12.5) //12
Math.round(-12.6) //13
Math.max(), Math.min()
Math.max()
取一组数的最大值
Math.max(12, 23, 13, 24, 23, 24, 25, 34, 15); //34
Math.min
取一组数的最小值
Math.min(12, 23, 13, 24, 23, 24, 25, 34, 15); //12
Math.random()
Math.random
获取[0-1]之间的随机小数
Math.random() //0.8184921957461317
Math.random() //0.351685690699056
Math.random() //0.4972569148842041
Math.trunc()
Math.trunc()
用于去除一个数的小数部分 返回整数
Math.trunc(1.23456) //1
Math.trunc(1.23456) //1
Math.trunc('3.43') //3
Math.trunc(true) //1
Math.trunc(NaN) //NaN
Math.trunc(undefined) //NaN
通过上面列子 很明显的是Math.trunc()
方法 遇到非数字会默认调用Number()
进行转换
Math.sign()
Math.sign()
判断一个数是正数、负数、还是零。会默认调用Number()
进行转换
- 参数为正数 返回 1
- 参数为负数 返回 -1
- 参数为 0 返回 0
- 参数为-0 返回 -0
- 其他值 返回 NaN
Math.sign(6) // 1
Math.sign(-6) // -1
Math.sign(0) // 0
Math.sign(-0) // -0
Math.sign(null) // 0
Math.sign(undefined) //NaN
Math.sign(NaN) // NaN
总结
- 获取指定范围内的随机整数 代码片段-获取指定范围内的随机整数
更多关于 ES6 Number
的扩展 还正在学习中 阮一峰ES6教程-数值的扩展
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。